<html>
<head><meta charset="utf-8"><title>bikeshedding &quot;well formed&quot; · wg-traits · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/index.html">wg-traits</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html">bikeshedding &quot;well formed&quot;</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="156634358"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634358" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634358">(Jan 22 2019 at 19:58)</a>:</h4>
<p>In the <a href="#narrow/stream/144729-wg-traits/topic/weekly.20meeting.202019-01-21" title="#narrow/stream/144729-wg-traits/topic/weekly.20meeting.202019-01-21">weekly meeting discussion today</a>, we talked about the current rules are using the phrase "well formed" in 3 distinct ways:</p>
<ul>
<li>well-formed declarations, like impls and traits, are basically declarations that do not have errors<br>
    - we more or less decided to call this being <em>legal</em></li>
<li>well-formed trait references <code>T: Trait</code>, which means that <code>T: Trait</code> is implemented and so are all of its where clauses</li>
<li>well-formed types <code>Foo&lt;T&gt;</code>, which means that all the where clauses on the type <code>Foo</code> are implemented</li>
</ul>
<p>It seems like the latter two names should be altered, but not clear precisely to what.</p>



<a name="156634680"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634680" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634680">(Jan 22 2019 at 20:03)</a>:</h4>
<blockquote>
<ul>
<li>we more or less decided to call this being legal</li>
</ul>
</blockquote>
<p>As I said before... this seems more confusing than helpful; now you have to explain the distinction between "legal" and "well-formed" when these two are actually more or less synonyms in natural language.</p>
<p>I think it would be better to state what sort of WF-ness it is; e.g. <code>WFTrait(...)</code>, <code>WFImpl(..)</code> and whatnot...<br>
This reduces "reasoning footprint" and ambiguity in the rules</p>



<a name="156634805"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634805" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634805">(Jan 22 2019 at 20:04)</a>:</h4>
<p>If you think "legal" is better... write <code>LegalXyz(...)</code> ;)</p>



<a name="156634821"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634821" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634821">(Jan 22 2019 at 20:05)</a>:</h4>
<p>I don't see why we would have to explain this distinction</p>



<a name="156634831"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634831" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634831">(Jan 22 2019 at 20:05)</a>:</h4>
<p>those two things are not comparable</p>



<a name="156634851"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634851" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634851">(Jan 22 2019 at 20:05)</a>:</h4>
<p>that is, we don't have a notion of "well formed" that applies to (e.g.) an impl declaration</p>



<a name="156634877"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634877" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634877">(Jan 22 2019 at 20:05)</a>:</h4>
<p>(if we choose to call it "legal", that is)</p>



<a name="156634967"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156634967" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156634967">(Jan 22 2019 at 20:06)</a>:</h4>
<p>regarding this:</p>
<blockquote>
<p>well-formed trait references <code>T: Trait</code>, which means that <code>T: Trait</code> is implemented and so are all of its where clauses</p>
</blockquote>
<p>I like "fully implemented" for this, though it's maybe not <em>perfect</em>. But it gives me a much stronger intuition than "well-formed" ever did. =)</p>



<a name="156635115"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156635115" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156635115">(Jan 22 2019 at 20:08)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span> all I'm saying is that "legal" and "wf" are synonyms; imo you gain nothing my having two words for it... just more confusion -- if you want to distinguish, talk about what sort of legality it is in the name</p>



<a name="156635342"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156635342" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156635342">(Jan 22 2019 at 20:11)</a>:</h4>
<p>the reason I like "legal" is that it is a term people use ordinarily</p>



<a name="156635406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156635406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156635406">(Jan 22 2019 at 20:12)</a>:</h4>
<p>i.e., if I were explaining Rust rules to some lay person, I would say "the impl is legal if blah blah blah is true"</p>



<a name="156635419"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156635419" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156635419">(Jan 22 2019 at 20:12)</a>:</h4>
<p>I would never say to them "that impl is not well-formed"</p>



<a name="156635452"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156635452" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156635452">(Jan 22 2019 at 20:13)</a>:</h4>
<p>my point is not to debate which is more correct or better wrt. legal or WF...<br>
using "legal" is fine, but then use it everywhere and drop WF entirely</p>



<a name="156635479"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156635479" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156635479">(Jan 22 2019 at 20:13)</a>:</h4>
<p>its just as fine to say "Vec&lt;u8&gt; is a legal type"</p>



<a name="156635568"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156635568" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156635568">(Jan 22 2019 at 20:14)</a>:</h4>
<p>e.g. <code>LegalType(Vec&lt;u8&gt;)</code> or <code>LegalTraitRef(...)</code></p>



<a name="156636833"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156636833" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156636833">(Jan 22 2019 at 20:31)</a>:</h4>
<p>Ah, I see. I think these are distinct concepts</p>



<a name="156636903"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156636903" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156636903">(Jan 22 2019 at 20:32)</a>:</h4>
<p>that is, I don't know that I would use the term "legal" to describe the other two places we use "well-formed" presently</p>



<a name="156636959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156636959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156636959">(Jan 22 2019 at 20:33)</a>:</h4>
<p><span class="user-mention" data-user-id="116009">@nikomatsakis</span>  so I haven't looked at the chalk docs in a while in the rustc guide... what are all the contexts WellFormed is for used currently?</p>



<a name="156637244"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156637244" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156637244">(Jan 22 2019 at 20:36)</a>:</h4>
<p>Basically the first context is sort of "visible to end users" -- it describes the conditions that must be met or else a user error is reported. The other two contexts are more internal.</p>



<a name="156641159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641159">(Jan 22 2019 at 21:27)</a>:</h4>
<p>So, <span class="user-mention" data-user-id="126931">@centril</span>, I believe that well-formed is used traditionally to basically mean "all names are in scope". I reviewed briefly the Wadler paper to double check that intuition, and it seems to match (let me know if you think I am mistaken). It's a very simple guarantee. For historical reasons (read: my fault), I somehow started using the term in a more expansive way in rustc.</p>
<p>The conditions I am describing via "legal" is sort of analogous to what the <code>OK</code> judgements in <a href="https://www.cis.upenn.edu/~bcpierce/papers/fj-toplas.pdf" target="_blank" title="https://www.cis.upenn.edu/~bcpierce/papers/fj-toplas.pdf">Featherweight Java</a> (see Fig 7). I prefer legal to "OK" =)</p>



<a name="156641182"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641182" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641182">(Jan 22 2019 at 21:27)</a>:</h4>
<p>(Incidentally, FJ also uses well-formed to mean "names are in scope")</p>



<a name="156641248"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641248" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641248">(Jan 22 2019 at 21:28)</a>:</h4>
<p>well, wait</p>



<a name="156641267"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641267" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641267">(Jan 22 2019 at 21:28)</a>:</h4>
<p><a href="/user_uploads/4715/1F9n9fpsbzmW3zdKwH4P2Aj7/Screen-Shot-2019-01-22-at-4.28.18-PM.png" target="_blank" title="Screen-Shot-2019-01-22-at-4.28.18-PM.png">Screen-Shot-2019-01-22-at-4.28.18-PM.png</a></p>
<div class="message_inline_image"><a href="/user_uploads/4715/1F9n9fpsbzmW3zdKwH4P2Aj7/Screen-Shot-2019-01-22-at-4.28.18-PM.png" target="_blank" title="Screen-Shot-2019-01-22-at-4.28.18-PM.png"><img src="/user_uploads/4715/1F9n9fpsbzmW3zdKwH4P2Aj7/Screen-Shot-2019-01-22-at-4.28.18-PM.png"></a></div>



<a name="156641300"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641300" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641300">(Jan 22 2019 at 21:29)</a>:</h4>
<p>I take that back; in FJ, a "well-formed" type means something very similar to what we are using it to mean</p>



<a name="156641320"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641320" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641320">(Jan 22 2019 at 21:29)</a>:</h4>
<p>"ok"  == WF :P</p>



<a name="156641322"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641322" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641322">(Jan 22 2019 at 21:29)</a>:</h4>
<p>e.g., <code>Foo&lt;Bar&gt;</code> is only well-formed if <code>Bar</code> is a subtype of the bounds declared in the class</p>



<a name="156641345"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641345" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641345">(Jan 22 2019 at 21:29)</a>:</h4>
<p>e.g. "in Delta, T-bar is well-formed/ok"</p>



<a name="156641430"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641430" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641430">(Jan 22 2019 at 21:30)</a>:</h4>
<p>I am presently leaning towards the following terms, in any case:</p>
<ul>
<li>declarations are <em>legal</em> if the required goals can be proven</li>
<li>trait references are <em>fully implemented</em> or maybe <em>deeply implemented</em> if all of their where clauses are satisfied</li>
<li>types are <em>well formed</em></li>
</ul>



<a name="156641462"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641462" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641462">(Jan 22 2019 at 21:30)</a>:</h4>
<p>what's the distinction btw fully and not?</p>



<a name="156641488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641488">(Jan 22 2019 at 21:31)</a>:</h4>
<p>Implemented means that we know there is an impl of the trait, but perhaps not for all the where clauses</p>



<a name="156641504"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641504" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641504">(Jan 22 2019 at 21:31)</a>:</h4>
<p>so an <code>impl</code> provides a rule for <code>Implemented</code> but does not (in and of itself) prove <code>DeeplyImplemented</code></p>



<a name="156641537"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641537" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641537">(Jan 22 2019 at 21:31)</a>:</h4>
<p>hmm... perhaps <code>Satisfied(Foo: Bar)</code> ?</p>



<a name="156641587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641587">(Jan 22 2019 at 21:32)</a>:</h4>
<p>I don't feel that captures the essential difference :)</p>



<a name="156641593"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641593" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641593">(Jan 22 2019 at 21:32)</a>:</h4>
<p>nor is it a Rust term</p>



<a name="156641640"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641640" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641640">(Jan 22 2019 at 21:33)</a>:</h4>
<p>put another way, "implemented" and "satisfied" feel sort of like synonyms to me</p>



<a name="156641649"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641649" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641649">(Jan 22 2019 at 21:33)</a>:</h4>
<p>hah =P</p>



<a name="156641665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641665">(Jan 22 2019 at 21:33)</a>:</h4>
<p>fair</p>



<a name="156641800"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641800" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641800">(Jan 22 2019 at 21:35)</a>:</h4>
<p>that said, it may not be worth bikeshedding <em>too much</em> on the name of the wf-trait-ref,</p>



<a name="156641809"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641809" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641809">(Jan 22 2019 at 21:35)</a>:</h4>
<p>because I think it might make sense to do a deeper discussion of implied bounds</p>



<a name="156641813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641813">(Jan 22 2019 at 21:35)</a>:</h4>
<p>make sure the setup feels right</p>



<a name="156641814"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641814" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641814">(Jan 22 2019 at 21:35)</a>:</h4>
<p>talk through what the things mean</p>



<a name="156641816"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641816" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641816">(Jan 22 2019 at 21:35)</a>:</h4>
<p>and in the process maybe better names arise :)</p>



<a name="156641896"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641896" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641896">(Jan 22 2019 at 21:36)</a>:</h4>
<p>I'm also pondering the <a href="#narrow/stream/144729-wg-traits/topic/alternate.20implied.20bounds.20lowering" title="#narrow/stream/144729-wg-traits/topic/alternate.20implied.20bounds.20lowering">alternative implied bounds formulation</a> I described a bit back, I want to make sure I have a good gut feeling for what's wrong there</p>



<a name="156641935"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641935" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641935">(Jan 22 2019 at 21:36)</a>:</h4>
<p>yea I agree with agreeing about semantics before agreeing to labels; that might be what's missing</p>



<a name="156641982"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156641982" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> centril <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156641982">(Jan 22 2019 at 21:37)</a>:</h4>
<p>e.g. it would be useful (for me) to see all the rules "in one place" and how they relate in a dense form</p>



<a name="156673193"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156673193" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> scalexm <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156673193">(Jan 23 2019 at 08:50)</a>:</h4>
<p><span class="user-mention" data-user-id="126931">@centril</span> I (maybe naively) believe that this is what the chapter in the rustc-guide is for</p>



<a name="156693210"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/144729-wg-traits/topic/bikeshedding%20%22well%20formed%22/near/156693210" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/144729-wg-traits/topic/bikeshedding.20.22well.20formed.22.html#156693210">(Jan 23 2019 at 14:36)</a>:</h4>
<p>there are two chapters in the rustc-guide:</p>
<ul>
<li>a more <a href="https://rust-lang.github.io/rustc-guide/traits/implied-bounds.html" target="_blank" title="https://rust-lang.github.io/rustc-guide/traits/implied-bounds.html">"tutorial-like" into to implied bounds</a></li>
<li>and a more <a href="https://rust-lang.github.io/rustc-guide/traits/lowering-rules.html" target="_blank" title="https://rust-lang.github.io/rustc-guide/traits/lowering-rules.html">compact, reference-like set of rules</a></li>
</ul>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>